package com.cherry.javaee.test;

import com.cherry.javaee.demo.domain.User;
import com.cherry.javaee.demo.service.IUserService;
import config.SpringBaseConfig;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.List;
/**
 * spring与junit整合
 * RunWith
 * ContextConfiguration :location(xml方式)
 *  classed(注解方式)
 *
 * 使用Junit单元测试：测试我们的配置
 * Spring整合junit的配置
 *      1、导入spring整合junit的jar(坐标)
 *      2、使用Junit提供的一个注解把原有的main方法替换了，替换成spring提供的
 *             @Runwith
 *      3、告知spring的运行器，spring和ioc创建是基于xml还是注解的，并且说明位置
 *          @ContextConfiguration
 *                  locations：指定xml文件的位置，加上classpath关键字，表示在类路径下
 *                  classes：指定注解类所在地位置
 *
 *   当我们使用spring 5.x版本的时候，要求junit的jar必须是4.12及以上
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:bean1.xml")
//@ContextConfiguration(classes = SpringBaseConfig.class)
public class UserServiceTest2 {

    @Autowired
    IUserService userService;

    @Test
    public void testFindAll() {
        List<User> list = userService.findAllUser();
        for (User user : list) {
            System.out.println(user);
        }
    }

    @Test
    public void testFindUser() {
        System.out.println(userService.findUser(1L));
    }

    @Test
    public void testAddUser() {
        userService.saveUser(new User("添加" + Math.random() * 100 + 1, "添加" + Math.random() * 100 + 100));
    }

    @Test
    public void testUpdateUser() {
        userService.update(new User(1L, "更新name", "更新password"));
    }

    @Test
    public void testDeleteUser() {
        userService.deleteUser(6L);
    }

}
